﻿package com.thorqq.magictimer.action;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;

import com.thorqq.magictimer.core.TimerAbs;
import com.thorqq.magictimer.util.Util;

/**
 * 接收虚拟短信
 * 
 */
public class ActionRecvVirtualSMS extends ActionSendSMS
{
    private static final long serialVersionUID = 7138424070195857451L;
    
    public ActionRecvVirtualSMS(int id, int execOrder, String actionType, String param)
    {
        super(id, execOrder, actionType, param);
    }

    @Override
    public boolean run(Context context, TimerAbs timer)
    {
        this.paramToString();
                
        for (String key : mPhoneNumber.keySet())
        {
            try
            {
                ContentValues values = new ContentValues();
                // 发送时间
                values.put("date", System.currentTimeMillis());
                // 阅读状态  1已读 0未读
                values.put("read", Integer.valueOf(0));
                // 1为收 2为发
                values.put("type", 1);
                // 送达号码
                values.put("address", key);
                // 送达内容
                values.put("body", mContent);
                // 插入短信库
                context.getContentResolver().insert(Uri.parse("content://sms/"),
                        values);
                
                //播放通知音
//                MediaPlayer mediaPlayer = new MediaPlayer();
//                mediaPlayer.setDataSource(context, 
//                        RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
//                mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
//                mediaPlayer.setLooping(false);
//                mediaPlayer.prepare();
//                mediaPlayer.start();

                //跳转到收件箱
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_MAIN);
                intent.addCategory(Intent.CATEGORY_DEFAULT);
                intent.setType("vnd.android-dir/mms-sms");

                PendingIntent pendingNotify = PendingIntent.getActivity(context,
                        timer.getID(), intent, 0);

                NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
                
                String label = mPhoneNumber.get(key);
                if(label == null || label.length() == 0)
                {
                    label = key;
                }
                //获取不到系统的短信通知栏图标，这里暂时用ic_dialog_email代替
                Notification notification = new Notification(android.R.drawable.ic_dialog_email, 
                        label+":"+mContent, System.currentTimeMillis());

                // 在此处设置在nority列表里的该norifycation得显示情况。
                notification.setLatestEventInfo(context, label, mContent, pendingNotify);
                // FLAG_AUTO_CANCEL 用户点击后自动取消
                // FLAG_ONGOING_EVENT 将此通知放到通知栏的"Ongoing"即"正在运行"组中
                notification.flags |= Notification.FLAG_AUTO_CANCEL;
                notification.flags |= Notification.FLAG_ONGOING_EVENT;

                //FLAG_AUTO_CANCEL   该通知能被状态栏的清除按钮给清除掉 
                //FLAG_NO_CLEAR      该通知不能被状态栏的清除按钮给清除掉 
                //FLAG_ONGOING_EVENT 通知放置在正在运行 
                //FLAG_INSISTENT     是否一直进行，比如音乐一直播放，知道用户响应 
                //FLAG_ONGOING_EVENT; // 将此通知放到通知栏的"Ongoing"即"正在运行"组中    
                //FLAG_NO_CLEAR; // 表明在点击了通知栏中的"清除通知"后，此通知不清除，经常与FLAG_ONGOING_EVENT一起使用    
                notification.flags |= Notification.FLAG_SHOW_LIGHTS;    
                //DEFAULT_ALL     使用所有默认值，比如声音，震动，闪屏等等 
                //DEFAULT_LIGHTS  使用默认闪光提示 
                //DEFAULT_SOUNDS  使用默认提示声音 
                //DEFAULT_VIBRATE 使用默认手机震动，需加上<uses-permission android:name="android.permission.VIBRATE" />权限 
                notification.defaults = Notification.DEFAULT_SOUND;  
                //叠加效果常量 
                //notification.defaults=Notification.DEFAULT_LIGHTS|Notification.DEFAULT_SOUND; 
                //notification.ledARGB = Color.BLUE;    
                //notification.ledOnMS = 5000; //闪光时间，毫秒 

                nm.notify(timer.getID(), notification);
                
                Util.log("Receive virtual sms to " + mPhoneNumber.get(key) + "|" + key);            } 
            catch (Exception e)
            {
                Util.log_ex(e);
            }
        }

        return true;
    }

    @Override
    public String getName()
    {
        return "接收虚拟短信";
    }
}
